Analyzing video streams to determine whether or not any interesting activities or objects are present is a resource-intensive operation. Software applications are used to analyze video data, attempting to recognize certain activities or objects in the video data. For example, recognition applications exist for recognizing faces, gestures, vehicles, guns, motion, and the like. Often, such applications are used to analyze surveillance video streams for security purposes.
One purpose for storing video data is to search many hours or days of video data for suspicious persons and activities, and particular events. For example, security personnel for a hotel may be told that a valuable necklace of a hotel guest was stolen during the evening hours of a certain day.
One approach to discover the identity of the thief would be for the security personnel to manually review all the video data that was captured during the appropriate hours and search for suspicious behavior or a particular person within the video data. This may require many hours of labor.
Another approach is to specify a query to execute directly against the video data or against analysis data that has been generated based on the actual video data. The query may specify that motion must have been detected by one or more video cameras during a particular period of time. Alternatively, the query may specify an object (e.g., a particular person, the shape of a necklace, etc.) to search for within the video data or analysis data.
What is needed is a technique for specifying more complex criteria to search for particular changes captured within video data.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.